Variables:

Risk Age Sex Country

library(data.table)
library(tidyr)

#read the data (Wave 5)

# Data of Wave 5


WV5_data <- readRDS("/Users/cristinacandido/Documents/Github/risk_wvs/data/WVS/F00007944-WV5_Data_R_v20180912.rds")


# Convert WV5_data-object in data.frame 
WV5_data_df <- as.data.frame(WV5_data)

# show first five columns
head(WV5_data_df[, 1:5])

clean the data set

library(dplyr)

#rename the variables
WV5_data <- WV5_data_df %>%
  rename(sex = V235, age = V237, country = V2, wave = V1, risk = V86)
WV5_data


#select only the variables of interest
WV5_data <- WV5_data %>%
  select(sex, age, country, wave, risk)
WV5_data
#decode the country names 
countrynames = read.csv("/Users/cristinacandido/Documents/Github/risk_wvs/data/WVS/countrynames.txt", header=FALSE,as.is=TRUE)
colnames(countrynames) = c("code", "name")
WV5_data$country_lab = countrynames$name [match(WV5_data$country, countrynames$code)]
table(WV5_data$country_lab)

            Andorra           Argentina           Australia              Brazil            Bulgaria        Burkina Faso              Canada               Chile 
               1003                1002                1421                1500                1001                1534                2164                1000 
              China            Colombia          Cyprus (G)               Egypt            Ethiopia             Finland              France             Georgia 
               1991                3025                1050                3051                1500                1014                1001                1500 
            Germany               Ghana       Great Britain           Guatemala           Hong Kong             Hungary               India           Indonesia 
               2064                1534                1041                1000                1252                1007                2001                2015 
               Iran                Iraq               Italy               Japan              Jordan            Malaysia                Mali              Mexico 
               2667                2701                1012                1096                1200                1201                1534                1560 
            Moldova             Morocco         Netherlands         New Zealand              Norway                Peru              Poland             Romania 
               1046                1200                1050                 954                1025                1500                1000                1776 
             Russia              Rwanda            Slovenia        South Africa         South Korea               Spain              Sweden         Switzerland 
               2033                1507                1037                2988                1200                1200                1003                1241 
             Taiwan            Thailand Trinidad and Tobago              Turkey             Ukraine       United States             Uruguay            Viet Nam 
               1227                1534                1002                1346                1000                1249                1000                1495 
             Zambia 
               1500 
WV5_data
NA
NA

#Read Dataset (Wave 6)

WV6_data <- load("/Users/cristinacandido/Documents/Github/risk_wvs/data/WVS/WV6_Data_R_v20201117.rdata") 
WV6_data <- WV6_Data_R_v20201117 
print(WV6_data)

#rename variables

WV6_data <- WV6_data %>%
  rename(wave = V1, sex = V240, age = V242,country = V2, risk = V76)


#select only the variables of interest
WV6_data <- WV6_data %>%
  select(wave, sex, age, country, sex,risk)
WV6_data
NA

#decode daraset (Wave 6)

countrynames = read.csv("/Users/cristinacandido/Documents/Github/risk_wvs/data/WVS/countrynames.txt", header=FALSE,as.is=TRUE)
colnames(countrynames) = c("code", "name")
WV6_data$country_lab = countrynames$name [match(WV6_data$country, countrynames$code)]
table(WV6_data$country_lab)

            Algeria           Argentina             Armenia           Australia          Azerbaijan             Belarus              Brazil               Chile 
               1200                1030                1100                1477                1002                1535                1486                1000 
              China            Colombia          Cyprus (G)             Ecuador               Egypt             Estonia             Georgia             Germany 
               2300                1512                1000                1202                1523                1533                1202                2046 
              Ghana               Haiti           Hong Kong               India                Iraq               Japan              Jordan          Kazakhstan 
               1552                1996                1000                4078                1200                2443                1200                1500 
             Kuwait          Kyrgyzstan             Lebanon               Libya            Malaysia              Mexico             Morocco         Netherlands 
               1303                1500                1200                2131                1300                2000                1200                1902 
        New Zealand             Nigeria            Pakistan           Palestine                Peru         Philippines              Poland               Qatar 
                841                1759                1200                1000                1210                1200                 966                1060 
            Romania              Russia              Rwanda           Singapore            Slovenia        South Africa         South Korea               Spain 
               1503                2500                1527                1972                1069                3531                1200                1189 
             Sweden              Taiwan            Thailand Trinidad and Tobago             Tunisia              Turkey             Ukraine       United States 
               1206                1238                1200                 999                1205                1605                1500                2232 
            Uruguay          Uzbekistan               Yemen            Zimbabwe 
               1000                1500                1000                1500 
WV6_data

#combine the 2 dataset (Wave 6 + Wave 5)

WV5_data
WV6_data
data = rbind(WV5_data, WV6_data)
data

#number of countries

length(unique(data$country_lab))
[1] 80

#exclusion of participants and omission of missing data (na)

data = subset(data, risk > 0 & sex > 0 & age >0 )
data_Wave5 = subset(WV5_data, risk > 0 & sex > 0 & age >0 )
data_Wave6 = subset(WV6_data, risk > 0 & sex > 0 & age >0)
data <- na.omit(data)
data_Wave5 <- na.omit(data_Wave5)
data_Wave6 <- na.omit(data_Wave6)



#number of participants per Wave

nrow(data)
[1] 156528
nrow(data_Wave5)
[1] 70308
nrow(data_Wave6)
[1] 86220
# Load the dplyr package
library(dplyr)

# Assuming the data frame is called 'data' and the column containing the country information is called 'country'
country_counts <- data %>%
  count(country_lab)

# Print the result
print(country_counts)
NA

#number and list and participants pro countries pro Wave (including both Waves together)

table(data_Wave5$country_lab)

            Andorra           Argentina           Australia              Brazil            Bulgaria        Burkina Faso              Canada               Chile 
               1001                 981                1381                1492                 942                1332                2121                 969 
              China          Cyprus (G)               Egypt            Ethiopia             Finland              France             Georgia             Germany 
               1898                1042                3026                1481                1013                 995                1451                2019 
              Ghana       Great Britain             Hungary               India           Indonesia                Iran               Japan              Jordan 
               1513                1036                1003                1575                1942                2615                1032                1163 
           Malaysia                Mali              Mexico             Moldova             Morocco         Netherlands              Norway                Peru 
               1200                1312                1505                1028                1145                1046                1019                1430 
             Poland             Romania              Russia              Rwanda            Slovenia        South Africa         South Korea               Spain 
                989                1583                1970                1409                1008                2945                1200                1184 
             Sweden         Switzerland              Taiwan            Thailand Trinidad and Tobago              Turkey             Ukraine       United States 
                997                1233                1225                1514                 997                1303                 967                1219 
            Uruguay            Viet Nam              Zambia 
                989                1416                1452 
length(unique(data_Wave5$country_lab)) 
[1] 51
table(data_Wave6$country_lab)

            Algeria           Argentina             Armenia           Australia          Azerbaijan             Belarus              Brazil               Chile 
               1115                1011                1090                1441                1002                1528                1481                 914 
              China            Colombia          Cyprus (G)             Ecuador               Egypt             Estonia             Georgia             Germany 
               2167                1506                 993                1201                1523                1509                1190                2024 
              Ghana               Haiti           Hong Kong               India                Iraq               Japan              Jordan          Kazakhstan 
               1552                1976                 977                3472                1187                2201                1195                1500 
             Kuwait          Kyrgyzstan             Lebanon               Libya            Malaysia              Mexico             Morocco         Netherlands 
               1190                1497                1177                2043                1300                1996                1035                1813 
        New Zealand             Nigeria            Pakistan           Palestine                Peru         Philippines              Poland               Qatar 
                802                1759                1176                 974                1158                1199                 950                1052 
            Romania              Russia              Rwanda           Singapore            Slovenia        South Africa         South Korea               Spain 
               1436                1806                1527                1938                1051                3481                1182                1173 
             Sweden              Taiwan            Thailand Trinidad and Tobago             Tunisia              Turkey             Ukraine       United States 
               1200                1195                1160                 983                1097                1573                1500                2189 
            Uruguay          Uzbekistan               Yemen            Zimbabwe 
                991                1433                 929                1500 
length(unique(data_Wave6$country_lab))
[1] 60
length(unique(data$country_lab)) 
[1] 77
table(data$country_lab)

            Algeria             Andorra           Argentina             Armenia           Australia          Azerbaijan             Belarus              Brazil 
               1115                1001                1992                1090                2822                1002                1528                2973 
           Bulgaria        Burkina Faso              Canada               Chile               China            Colombia          Cyprus (G)             Ecuador 
                942                1332                2121                1883                4065                1506                2035                1201 
              Egypt             Estonia            Ethiopia             Finland              France             Georgia             Germany               Ghana 
               4549                1509                1481                1013                 995                2641                4043                3065 
      Great Britain               Haiti           Hong Kong             Hungary               India           Indonesia                Iran                Iraq 
               1036                1976                 977                1003                5047                1942                2615                1187 
              Japan              Jordan          Kazakhstan              Kuwait          Kyrgyzstan             Lebanon               Libya            Malaysia 
               3233                2358                1500                1190                1497                1177                2043                2500 
               Mali              Mexico             Moldova             Morocco         Netherlands         New Zealand             Nigeria              Norway 
               1312                3501                1028                2180                2859                 802                1759                1019 
           Pakistan           Palestine                Peru         Philippines              Poland               Qatar             Romania              Russia 
               1176                 974                2588                1199                1939                1052                3019                3776 
             Rwanda           Singapore            Slovenia        South Africa         South Korea               Spain              Sweden         Switzerland 
               2936                1938                2059                6426                2382                2357                2197                1233 
             Taiwan            Thailand Trinidad and Tobago             Tunisia              Turkey             Ukraine       United States             Uruguay 
               2420                2674                1980                1097                2876                2467                3408                1980 
         Uzbekistan            Viet Nam               Yemen              Zambia            Zimbabwe 
               1433                1416                 929                1452                1500 
data$risk = 6 - data$risk + 1
data$risk_ord=data$risk 
data$risk = 10*scale(data$risk, center=TRUE,scale=TRUE)+50
data
NA
NA

#number of males vs females (1 = males; 2 = females)

table(data$sex)
table(data_Wave5$sex)
table(data_Wave6$sex)
#create a categorical age variable
data$agecat[data$age<20]="15-19"
data$agecat[data$age>=20 & data$age <30] = "20-29"
data$agecat[data$age>=30 & data$age <40] = "30-39"
data$agecat[data$age>=40 & data$age <50] = "40-49"
data$agecat[data$age>=50 & data$age <60] = "50-59"
data$agecat[data$age>=60 & data$age <70] = "60-69"
data$agecat[data$age>=70 & data$age <80] = "70-79"
data$agecat[data$age>=80] = "80+"

#gender variables

data$sex[data$sex == 1] <- "male"
data$sex[data$sex == 2] <- "female"

data_Wave5$sex[data_Wave5$sex == 1] <- "male"
data_Wave5$sex[data_Wave5$sex == 2] <- "female"

data_Wave6$sex[data_Wave6$sex == 1] <- "male"
data_Wave6$sex[data_Wave6$sex == 2] <- "female"

#average age of participants
mean(data$age)
[1] 41.62343
median(data$age)
[1] 39

#wave variables

data$wave[data$wave == 5] <- "Wave 5"
data$wave[data$wave == 6] <- "Wave 6"
data

#age range

range(data$age) 
range(data_Wave5$age)
range(data_Wave6$age)

#risk taking Frequency

library(ggplot2)
ggplot(data, aes(x = risk)) +
  geom_histogram(binwidth = 0.5, fill = "lightblue", color = "black") +
  labs(x = "Risk Taking", y = "Frequency", title = "Histogram of Risk Taking") +
  theme_minimal()

#age frequency

ggplot(data, aes(x = age)) +
  geom_histogram(binwidth = 0.5, fill = "lightblue", color = "black") +
  labs(x = "Age", y = "Frequency", title = "Histogram of Age Distributionn") +
  theme_minimal()

#age vs risk taking


ggplot(data, aes(x = agecat, y = risk)) +
  geom_boxplot() +
  labs(title = "Boxplot of Risk and Adventure by Age",
       x = "Age",
       y = "Risk and Adventure") +
  theme_minimal()

#sex vs risk taking

ggplot(data, aes(as.factor(sex), risk))+
  geom_boxplot()
#descriptive data 
summary(data)
#data cleaning: deletion of NAs 
data = na.omit(data)
summary(data)
     sex                 age            country           wave            risk.V1       country_lab           risk_ord        agecat         
 Length:156528      Min.   : 15.00   Min.   : 12.0   Min.   :5.000   Min.   :36.15574   Length:156528      Min.   :1.000   Length:156528     
 Class :character   1st Qu.: 28.00   1st Qu.:276.0   1st Qu.:5.000   1st Qu.:42.42763   Class :character   1st Qu.:2.000   Class :character  
 Mode  :character   Median : 39.00   Median :466.0   Median :6.000   Median :48.69953   Mode  :character   Median :3.000   Mode  :character  
                    Mean   : 41.62   Mean   :477.4   Mean   :5.551   Mean   :50.00000                      Mean   :3.207                     
                    3rd Qu.: 54.00   3rd Qu.:710.0   3rd Qu.:6.000   3rd Qu.:54.97142                      3rd Qu.:4.000                     
                    Max.   :102.00   Max.   :894.0   Max.   :6.000   Max.   :67.51521                      Max.   :6.000                     
#risk distribution according to Waves 5 and 6 
ggplot(data, aes(as.factor(wave), risk))+
  geom_boxplot()
#risk vs age
library(ggplot2)
ggplot(data, aes(risk, age))+
  geom_point()+
  geom_smooth(method = "lm")
#selected 3 countries: Andorra, Romania, Spain
data1 <- subset(data, country_lab %in% c("Andorra", "Romania", "Spain"))
# 3 risk distribution for 3 countries
ggplot(data1, aes(as.factor(country_lab), risk))+
  geom_boxplot()
#age vs risk depending on country
ggplot(data, aes(age, risk, color = as.factor(country_lab)))+
  geom_point()+
  geom_smooth(method = "lm", se = TRUE)
# read in file that contains hardship indicators manually collected from CIA factbook, WHO, and World Bank 
# (see Supplemental Materials for URL sources)
countryfacts = read.csv("/Users/cristinacandido/Documents/Github/risk_wvs/data/WVS/countryfacts_selection.csv", as.is = TRUE, header = TRUE) 

# Create a vector of labels with the same length as the number of columns in 'countryfacts'
labels <- c("code","country","codeWVS","Homicide","GDP","InfMort","LifeExp","GINI","GenderPEdu","code2")




# Print the result
print(countryfacts)
# Load the dplyr package
library(dplyr)

# Assuming the data frame is called 'data' and the column containing the country information is called 'country'
age_counts <- data %>%
  count(agecat)

# Print the result
print(age_counts)
summary(data)

# Load the dplyr package
library(dplyr)


# Count the number of occurrences of each age category for each country
agepercountries_counts <- data %>%
  group_by(country_lab) %>%
  count(agecat)

# Print the result
print(agepercountries_counts)
# Load the dplyr package if not already loaded
if (!require(dplyr)) {
  install.packages("dplyr")
  library(dplyr)
}

# Count the number of occurrences of each gender for each country
sexpercountries_counts <- data %>%
  group_by(country_lab) %>%
  count(sex)

# Print the result
print(sexpercountries_counts)
# Load the dplyr package if not already loaded
if (!require(dplyr)) {
  install.packages("dplyr")
  library(dplyr)
}

# Group the data by country and calculate the age distribution
age_distribution_per_country <- data %>%
  group_by(country_lab) %>%
  summarize(mean_age = mean(age, na.rm = TRUE),
            median_age = median(age, na.rm = TRUE),
            min_age = min(age, na.rm = TRUE),
            max_age = max(age, na.rm = TRUE))

# Print the result
print(age_distribution_per_country)
# Load the dplyr package if not already loaded
if (!require(dplyr)) {
  install.packages("dplyr")
  library(dplyr)
}

# Group the data by sex and calculate the mean risk for each sex
risk_by_sex <- data %>%
  group_by(sex) %>%
  summarize(mean_risk = mean(risk_ord, na.rm = TRUE))

# Calculate the difference in mean risk between sexes
sex_difference <- diff(risk_by_sex$mean_risk)

# Print the result
print(risk_by_sex)
print(sex_difference)
# Load the dplyr package if not already loaded
if (!require(dplyr)) {
  install.packages("dplyr")
  library(dplyr)
}

# Group the data by country_lab and calculate the mean risk for each country_lab
risk_by_country_lab <- data %>%
  group_by(country_lab) %>%
  summarize(mean_risk = mean(risk_ord, na.rm = TRUE))

# Print the result
print(risk_by_country_lab)
# Load the dplyr package if not already loaded
if (!require(dplyr)) {
  install.packages("dplyr")
  library(dplyr)
}



# Group the data by age_cat and calculate the mean risk for each age category
risk_by_agecat <- data %>%
  group_by(agecat) %>%
  summarize(mean_risk = mean(risk_ord, na.rm = TRUE))

# Print the result
print(risk_by_agecat)
NA
data
# Load the dplyr package if not already loaded
if (!require(dplyr)) {
  install.packages("dplyr")
  library(dplyr)
}

# Create the 'hardship' column in the 'countryfacts' data frame
countryfacts <- countryfacts %>%
  mutate(hardship = (homiciderate + gdp + infantmortality + lifeexpectancy + gini + femalemale_primedu) / 6)
Error in mutate(., hardship = (homiciderate + gdp + infantmortality +  : 
  object 'countryfacts' not found
countryfacts

#Algeria

dataAlgeria <- subset(data, country_lab %in% c("Algeria"))
library(ggplot2)


pAlgeria <- ggplot(dataAlgeria, aes(x = scale(age), y = risk_ord, color = as.factor(sex))) +
  geom_point() +
  geom_smooth(method = "lm") +
  labs(title = "Scatterplot of risk_ord vs. age in Algeria", x = "Age", y = "Risk")

print(pAlgeria)



# Fit a linear model
modelAlgeria <- lm(risk_ord ~ scale(age) * factor(sex), data = dataAlgeria)
summary(model)

Call:
lm(formula = risk_ord ~ scale(age) * factor(sex), data = dataAlgeria)

Residuals:
    Min      1Q  Median      3Q     Max 
-3.4793 -1.5238  0.0806  1.6283  3.8874 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                 3.44446    0.07514  45.841  < 2e-16 ***
scale(age)                 -0.79339    0.07535 -10.530  < 2e-16 ***
factor(sex)male             0.21389    0.10621   2.014 0.044273 *  
scale(age):factor(sex)male  0.37667    0.10626   3.545 0.000409 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.77 on 1111 degrees of freedom
Multiple R-squared:  0.1145,    Adjusted R-squared:  0.1121 
F-statistic: 47.88 on 3 and 1111 DF,  p-value: < 2.2e-16
dataAlgeria

#Andorra

dataAndorra <- subset(data, country_lab %in% c("Andorra"))
library(ggplot2)
PAndorra = ggplot(dataAndorra, aes(x = scale(age), risk_ord, color = as.factor(sex)))+
  geom_point()+
  geom_smooth(method = "lm")
PAndorra


modelAndorra<- lm(risk_ord ~ scale(age) * factor(sex), data = dataAndorra)
modelAndorra

Call:
lm(formula = risk_ord ~ scale(age) * factor(sex), data = dataAndorra)

Coefficients:
               (Intercept)                  scale(age)             factor(sex)male  scale(age):factor(sex)male  
                    3.2579                     -0.2608                      0.4797                     -0.1088  
country_counts

#Argentina

dataArgentina <- subset(data, country_lab %in% c("Argentina"))
library(ggplot2)
pArgentina = ggplot(dataArgentina, aes(x = scale(age), risk_ord, color = as.factor(sex)))+
  geom_point()+
  geom_smooth(method = "lm")
pArgentina


ModelArgentina <- lm(risk_ord ~ scale(age) * factor(sex), data = dataArgentina)
ModelArgentina

Call:
lm(formula = risk_ord ~ scale(age) * factor(sex), data = dataArgentina)

Coefficients:
               (Intercept)                  scale(age)             factor(sex)male  scale(age):factor(sex)male  
                    2.8772                     -0.2819                      0.4310                     -0.1187  

#Armenia

dataArmenia <- subset(data, country_lab %in% c("Armenia"))
library(ggplot2)
pArmenia = ggplot(dataArmenia, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pArmenia

#Australia

dataAustralia <- subset(data, country_lab %in% c("Australia"))
library(ggplot2)
pAustralia = ggplot(dataAustralia, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pAustralia

#Azerbaijan

dataAzerbaijan <- subset(data, country_lab %in% c("Australia"))
library(ggplot2)
pAzerbaijan = ggplot(dataAzerbaijan, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pAzerbaijan

#Belarus

dataBelarus <- subset(data, country_lab %in% c("Belarus"))
library(ggplot2)
pBelarus = ggplot(dataBelarus, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pBelarus

#Brazil

dataBrazil <- subset(data, country_lab %in% c("Brazil"))
library(ggplot2)
pBrazil = ggplot(dataBrazil, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pBrazil

#Bulgaria

dataBulgaria <- subset(data, country_lab %in% c("Bulgaria"))
library(ggplot2)
pBulgaria = ggplot(dataBulgaria, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pBulgaria

#Burkina Faso

dataBurkinaFaso <- subset(data, country_lab %in% c("Burkina Faso"))
library(ggplot2)
pBurkinaFaso = ggplot(dataBurkinaFaso, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pBurkinaFaso

#Canada

dataCanada <- subset(data, country_lab %in% c("Canada"))
library(ggplot2)
pCanada = ggplot(dataCanada, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pCanada

#Chile

dataChile <- subset(data, country_lab %in% c("Chile"))
library(ggplot2)
pChile = ggplot(dataChile, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pChile

#China

dataChina <- subset(data, country_lab %in% c("China"))
library(ggplot2)
pChina = ggplot(dataChina, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pChina

#Colombia

dataColombia <- subset(data, country_lab %in% c("Colombia"))
library(ggplot2)
pColombia = ggplot(dataColombia, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pColombia

#Cyprus (G)

dataCyprus <- subset(data, country_lab %in% c("Cyprus (G)"))
library(ggplot2)
pCyprus = ggplot(dataCyprus, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pCyprus

#Ecuador

dataEcuador <- subset(data, country_lab %in% c("Ecuador"))
library(ggplot2)
pEcuador = ggplot(dataEcuador, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pEcuador

#Egypt

dataEgypt <- subset(data, country_lab %in% c("Egypt"))
library(ggplot2)
pEgypt = ggplot(dataEgypt, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pEgypt

#Estonia

dataEstonia <- subset(data, country_lab %in% c("Estonia"))
library(ggplot2)
pEstonia = ggplot(dataEstonia, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pEstonia

#Ethiopia

dataEthiopia <- subset(data, country_lab %in% c("Ethiopia"))
library(ggplot2)
pEthiopia = ggplot(dataEthiopia, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pEthiopia

#Finland

dataFinland <- subset(data, country_lab %in% c("Finland"))
library(ggplot2)
pFinland = ggplot(dataFinland, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pFinland

#France

dataFrance <- subset(data, country_lab %in% c("France"))
library(ggplot2)
pFrance = ggplot(dataFrance, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pFrance

#Georgia

dataGeorgia <- subset(data, country_lab %in% c("Georgia"))
library(ggplot2)
pGeorgia = ggplot(dataGeorgia, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pGeorgia

#Germany

dataGermany <- subset(data, country_lab %in% c("Germany"))
library(ggplot2)
pGermany = ggplot(dataGermany, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pGermany

#Ghana

dataGhana <- subset(data, country_lab %in% c("Ghana"))
library(ggplot2)
pGhana = ggplot(dataGhana, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pGhana

#Great Britain

dataUK <- subset(data, country_lab %in% c("Great Britain"))
library(ggplot2)
pUK = ggplot(dataUK, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pUK

#Haiti

dataHaiti <- subset(data, country_lab %in% c("Haiti"))
library(ggplot2)
pHaiti = ggplot(dataHaiti, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pHaiti

#Hong Kong

dataHongKong <- subset(data, country_lab %in% c("Hong Kong"))
library(ggplot2)
pHongKong = ggplot(dataHongKong, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pHongKong

#Hungary

dataHungary <- subset(data, country_lab %in% c("Hungary"))
library(ggplot2)
pHungary = ggplot(dataHungary, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pHungary

#India

dataIndia <- subset(data, country_lab %in% c("India"))
library(ggplot2)
pIndia = ggplot(dataIndia, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pIndia

#Indonesia

dataIndonesia <- subset(data, country_lab %in% c("Indonesia"))
library(ggplot2)
pIndonesia = ggplot(dataIndonesia, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pIndonesia

#Iran

dataIran <- subset(data, country_lab %in% c("Iran"))
library(ggplot2)
pIran = ggplot(dataIran, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pIran

#Iraq

dataIraq <- subset(data, country_lab %in% c("Iraq"))
library(ggplot2)
pIraq = ggplot(dataIraq, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pIraq

#Japan

dataJapan <- subset(data, country_lab %in% c("Japan"))
library(ggplot2)
pJapan = ggplot(dataJapan, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pJapan

#Jordan

dataJordan <- subset(data, country_lab %in% c("Jordan"))
library(ggplot2)
pJordan = ggplot(dataJordan, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pJordan

#Kazakhstan

dataKazakhstan <- subset(data, country_lab %in% c("Kazakhstan"))
library(ggplot2)
pKazakhstan = ggplot(dataKazakhstan, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pKazakhstan

#Kuwait

dataKuwait <- subset(data, country_lab %in% c("Kuwait"))
library(ggplot2)
pKuwait = ggplot(dataKuwait, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pKuwait

#Kyrgyzstan

dataKyrgyzstan <- subset(data, country_lab %in% c("Kyrgyzstan"))
library(ggplot2)
pKyrgyzstan = ggplot(dataKyrgyzstan, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pKyrgyzstan

#Lebanon

dataLebanon <- subset(data, country_lab %in% c("Lebanon"))
library(ggplot2)
pLebanon = ggplot(dataLebanon, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pLebanon

#Libya

dataLibya <- subset(data, country_lab %in% c("Libya"))
library(ggplot2)
pLibya = ggplot(dataLibya, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pLibya

#Malaysia

dataMalaysia <- subset(data, country_lab %in% c("Malaysia"))
library(ggplot2)
pMalaysia = ggplot(dataMalaysia, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pMalaysia

#Mali

dataMali <- subset(data, country_lab %in% c("Mali"))
library(ggplot2)
pMali = ggplot(dataMali, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pMali

#Mexico

dataMexico <- subset(data, country_lab %in% c("Mexico"))
library(ggplot2)
pMexico = ggplot(dataMexico, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pMexico

#Morocco

dataMorocco <- subset(data, country_lab %in% c("Morocco"))
library(ggplot2)
pMorocco = ggplot(dataMorocco, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pMorocco

#Netherland

dataNetherlands <- subset(data, country_lab %in% c("Netherlands"))
library(ggplot2)
pNetherlands = ggplot(dataNetherlands, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pNetherlands

#New Zealand

dataNewZealand <- subset(data, country_lab %in% c("New Zealand"))
library(ggplot2)
pNewZealand = ggplot(dataNewZealand, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pNewZealand

#Nigeria

dataNigeria <- subset(data, country_lab %in% c("Nigeria"))
library(ggplot2)
pNigeria = ggplot(dataNigeria, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pNigeria

#Norway

dataNorway <- subset(data, country_lab %in% c("Norway"))
library(ggplot2)
pNorway = ggplot(dataNorway, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pNorway

#Pakistan

dataPakistan <- subset(data, country_lab %in% c("Pakistan"))
library(ggplot2)
pPakistan = ggplot(dataPakistan, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pPakistan

#Palestine

dataPalestine <- subset(data, country_lab %in% c("Palestine"))
library(ggplot2)
pPalestine = ggplot(dataPalestine, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pPalestine

#Peru

dataPeru <- subset(data, country_lab %in% c("Peru"))
library(ggplot2)
pPeru = ggplot(dataPeru, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pPeru

#Philippines

dataPhilippines <- subset(data, country_lab %in% c("Philippines"))
library(ggplot2)
pPhilippines = ggplot(dataPhilippines, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pPhilippines

#Poland

dataPoland <- subset(data, country_lab %in% c("Poland"))
library(ggplot2)
pPoland = ggplot(dataPoland, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pPoland

#Qatar

dataQatar <- subset(data, country_lab %in% c("Qatar"))
library(ggplot2)
pQatar = ggplot(dataQatar, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pQatar

#Romania

dataRomania <- subset(data, country_lab %in% c("Romania"))
library(ggplot2)
pRomania = ggplot(dataRomania, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pRomania

#Russia

dataRussia <- subset(data, country_lab %in% c("Russia"))
library(ggplot2)
pRussia = ggplot(dataRussia, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pRussia

#Rwanda

dataRwanda <- subset(data, country_lab %in% c("Rwanda"))
library(ggplot2)
pRwanda = ggplot(dataRwanda, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pRwanda

#Singapore

dataSingapore <- subset(data, country_lab %in% c("Singapore"))
library(ggplot2)
pSingapore = ggplot(dataSingapore, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pSingapore

#Slovenia

dataSlovenia <- subset(data, country_lab %in% c("Slovenia"))
library(ggplot2)
pSlovenia = ggplot(dataSlovenia, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pSlovenia

#South Africa

dataSouthAfrica <- subset(data, country_lab %in% c("South Africa"))
library(ggplot2)
pSouthAfrica = ggplot(dataSouthAfrica, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pSouthAfrica

#South Korea

dataSouthKorea <- subset(data, country_lab %in% c("South Korea"))
library(ggplot2)
pSouthKorea = ggplot(dataSouthKorea, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pSouthKorea

#Spain

dataSpain <- subset(data, country_lab %in% c("Spain"))
library(ggplot2)
pSpain = ggplot(dataSpain, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pSpain

#Sweden

dataSweden <- subset(data, country_lab %in% c("Sweden"))
library(ggplot2)
pSweden = ggplot(dataSweden, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pSweden

#Switzerland

dataSwitzerland <- subset(data, country_lab %in% c("Switzerland"))
library(ggplot2)
pSwitzerland = ggplot(dataSwitzerland, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pSwitzerland

#Taiwan

dataTaiwan <- subset(data, country_lab %in% c("Taiwan"))
library(ggplot2)
pTaiwan = ggplot(dataTaiwan, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pTaiwan

#Thailand

dataThailand <- subset(data, country_lab %in% c("Thailand"))
library(ggplot2)
pThailand = ggplot(dataThailand, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pThailand

#Trinidad and Tobago

dataTrinidad <- subset(data, country_lab %in% c("Trinidad and Tobago"))
library(ggplot2)
pTrinidad = ggplot(dataTrinidad, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pTrinidad

#Tunisia

dataTunisia<- subset(data, country_lab %in% c("Tunisia"))
library(ggplot2)
pTunisia = ggplot(dataTunisia, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pTunisia

#Turkey

dataTurkey <- subset(data, country_lab %in% c("Turkey"))
library(ggplot2)
pTurkey = ggplot(dataTurkey, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pTurkey

#Ukraine

dataUkraine <- subset(data, country_lab %in% c("Ukraine"))
library(ggplot2)
pUkraine = ggplot(dataUkraine, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pUkraine

#United States

dataUS <- subset(data, country_lab %in% c("United States"))
library(ggplot2)
pUS = ggplot(dataUS, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pUS

#Uruguay

dataUruguay <- subset(data, country_lab %in% c("Uruguay"))
library(ggplot2)
pUruguay = ggplot(dataUruguay, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pUruguay

#Uzbekistan

dataUzbekistan <- subset(data, country_lab %in% c("Uzbekistan"))
library(ggplot2)
pUzbekistan = ggplot(dataUzbekistan, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pUzbekistan

#Viet Nam

dataVietNam <- subset(data, country_lab %in% c("Viet Nam"))
library(ggplot2)
pVietNam = ggplot(dataVietNam, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pVietNam

#Yemen

dataYemen <- subset(data, country_lab %in% c("Yemen"))
library(ggplot2)
pYemen = ggplot(dataYemen, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pYemen

#Zambia

dataZambia <- subset(data, country_lab %in% c("Zambia"))
library(ggplot2)
pZambia = ggplot(dataZambia, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pZambia

#Zimbabwe

dataZimbabwe <- subset(data, country_lab %in% c("Zimbabwe"))
library(ggplot2)
pZimbabwe = ggplot(dataZimbabwe, aes(age, risk_ord))+
  geom_point()+
  geom_smooth(method = "lm")
pZimbabwe
#summarise the countries
# Assuming your original data frame has uppercase variable names (Age and Risk)

means_data <- data %>%
  group_by(country_lab) %>%
  summarise(
    Mean_Age = mean(age),
    Mean_Risk = mean(risk_ord))
    
    
  

means_data
NA
countryfacts
NA
gdp_data <- countryfacts %>%
  select(, label, code, gdp)
gdp_data
NA
rbind(gdp_data, means_data)
Error in match.names(clabs, names(xi)) : 
  names do not match previous names
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQpWYXJpYWJsZXM6IAoKUmlzawpBZ2UgClNleApDb3VudHJ5CgoKYGBge3J9CmxpYnJhcnkoZGF0YS50YWJsZSkKbGlicmFyeSh0aWR5cikKYGBgCgojcmVhZCB0aGUgZGF0YSAoV2F2ZSA1KQpgYGB7cn0KIyBEYXRhIG9mIFdhdmUgNQoKCldWNV9kYXRhIDwtIHJlYWRSRFMoIi9Vc2Vycy9jcmlzdGluYWNhbmRpZG8vRG9jdW1lbnRzL0dpdGh1Yi9yaXNrX3d2cy9kYXRhL1dWUy9GMDAwMDc5NDQtV1Y1X0RhdGFfUl92MjAxODA5MTIucmRzIikKCgojIENvbnZlcnQgV1Y1X2RhdGEtb2JqZWN0IGluIGRhdGEuZnJhbWUgCldWNV9kYXRhX2RmIDwtIGFzLmRhdGEuZnJhbWUoV1Y1X2RhdGEpCgojIHNob3cgZmlyc3QgZml2ZSBjb2x1bW5zCmhlYWQoV1Y1X2RhdGFfZGZbLCAxOjVdKQpgYGAKCiMgY2xlYW4gdGhlIGRhdGEgc2V0CmBgYHtyfQpsaWJyYXJ5KGRwbHlyKQoKI3JlbmFtZSB0aGUgdmFyaWFibGVzCldWNV9kYXRhIDwtIFdWNV9kYXRhX2RmICU+JQogIHJlbmFtZShzZXggPSBWMjM1LCBhZ2UgPSBWMjM3LCBjb3VudHJ5ID0gVjIsIHdhdmUgPSBWMSwgcmlzayA9IFY4NikKV1Y1X2RhdGEKCgojc2VsZWN0IG9ubHkgdGhlIHZhcmlhYmxlcyBvZiBpbnRlcmVzdApXVjVfZGF0YSA8LSBXVjVfZGF0YSAlPiUKICBzZWxlY3Qoc2V4LCBhZ2UsIGNvdW50cnksIHdhdmUsIHJpc2spCldWNV9kYXRhCmBgYAoKYGBge3J9CiNkZWNvZGUgdGhlIGNvdW50cnkgbmFtZXMgCmNvdW50cnluYW1lcyA9IHJlYWQuY3N2KCIvVXNlcnMvY3Jpc3RpbmFjYW5kaWRvL0RvY3VtZW50cy9HaXRodWIvcmlza193dnMvZGF0YS9XVlMvY291bnRyeW5hbWVzLnR4dCIsIGhlYWRlcj1GQUxTRSxhcy5pcz1UUlVFKQpjb2xuYW1lcyhjb3VudHJ5bmFtZXMpID0gYygiY29kZSIsICJuYW1lIikKV1Y1X2RhdGEkY291bnRyeV9sYWIgPSBjb3VudHJ5bmFtZXMkbmFtZSBbbWF0Y2goV1Y1X2RhdGEkY291bnRyeSwgY291bnRyeW5hbWVzJGNvZGUpXQp0YWJsZShXVjVfZGF0YSRjb3VudHJ5X2xhYikKV1Y1X2RhdGEKCgpgYGAKCiNSZWFkIERhdGFzZXQgKFdhdmUgNikKYGBge3J9CldWNl9kYXRhIDwtIGxvYWQoIi9Vc2Vycy9jcmlzdGluYWNhbmRpZG8vRG9jdW1lbnRzL0dpdGh1Yi9yaXNrX3d2cy9kYXRhL1dWUy9XVjZfRGF0YV9SX3YyMDIwMTExNy5yZGF0YSIpIApXVjZfZGF0YSA8LSBXVjZfRGF0YV9SX3YyMDIwMTExNyAKcHJpbnQoV1Y2X2RhdGEpCmBgYAoKI3JlbmFtZSB2YXJpYWJsZXMKYGBge3J9CldWNl9kYXRhIDwtIFdWNl9kYXRhICU+JQogIHJlbmFtZSh3YXZlID0gVjEsIHNleCA9IFYyNDAsIGFnZSA9IFYyNDIsY291bnRyeSA9IFYyLCByaXNrID0gVjc2KQoKCiNzZWxlY3Qgb25seSB0aGUgdmFyaWFibGVzIG9mIGludGVyZXN0CldWNl9kYXRhIDwtIFdWNl9kYXRhICU+JQogIHNlbGVjdCh3YXZlLCBzZXgsIGFnZSwgY291bnRyeSwgc2V4LHJpc2spCldWNl9kYXRhCgpgYGAKCgojZGVjb2RlIGRhcmFzZXQgKFdhdmUgNikKYGBge3J9CmNvdW50cnluYW1lcyA9IHJlYWQuY3N2KCIvVXNlcnMvY3Jpc3RpbmFjYW5kaWRvL0RvY3VtZW50cy9HaXRodWIvcmlza193dnMvZGF0YS9XVlMvY291bnRyeW5hbWVzLnR4dCIsIGhlYWRlcj1GQUxTRSxhcy5pcz1UUlVFKQpjb2xuYW1lcyhjb3VudHJ5bmFtZXMpID0gYygiY29kZSIsICJuYW1lIikKV1Y2X2RhdGEkY291bnRyeV9sYWIgPSBjb3VudHJ5bmFtZXMkbmFtZSBbbWF0Y2goV1Y2X2RhdGEkY291bnRyeSwgY291bnRyeW5hbWVzJGNvZGUpXQp0YWJsZShXVjZfZGF0YSRjb3VudHJ5X2xhYikKV1Y2X2RhdGEKYGBgCgojY29tYmluZSB0aGUgMiBkYXRhc2V0IChXYXZlIDYgKyBXYXZlIDUpCmBgYHtyfQpXVjVfZGF0YQpXVjZfZGF0YQpkYXRhID0gcmJpbmQoV1Y1X2RhdGEsIFdWNl9kYXRhKQpkYXRhCgojbnVtYmVyIG9mIGNvdW50cmllcwoKbGVuZ3RoKHVuaXF1ZShkYXRhJGNvdW50cnlfbGFiKSkKYGBgCiNleGNsdXNpb24gb2YgcGFydGljaXBhbnRzIGFuZCBvbWlzc2lvbiBvZiBtaXNzaW5nIGRhdGEgKG5hKQpgYGB7cn0KZGF0YSA9IHN1YnNldChkYXRhLCByaXNrID4gMCAmIHNleCA+IDAgJiBhZ2UgPjAgKQpkYXRhX1dhdmU1ID0gc3Vic2V0KFdWNV9kYXRhLCByaXNrID4gMCAmIHNleCA+IDAgJiBhZ2UgPjAgKQpkYXRhX1dhdmU2ID0gc3Vic2V0KFdWNl9kYXRhLCByaXNrID4gMCAmIHNleCA+IDAgJiBhZ2UgPjApCmRhdGEgPC0gbmEub21pdChkYXRhKQpkYXRhX1dhdmU1IDwtIG5hLm9taXQoZGF0YV9XYXZlNSkKZGF0YV9XYXZlNiA8LSBuYS5vbWl0KGRhdGFfV2F2ZTYpCgoKCiNudW1iZXIgb2YgcGFydGljaXBhbnRzIHBlciBXYXZlCgpucm93KGRhdGEpCm5yb3coZGF0YV9XYXZlNSkKbnJvdyhkYXRhX1dhdmU2KQpgYGAKYGBge3J9CiMgTG9hZCB0aGUgZHBseXIgcGFja2FnZQpsaWJyYXJ5KGRwbHlyKQoKIyBBc3N1bWluZyB0aGUgZGF0YSBmcmFtZSBpcyBjYWxsZWQgJ2RhdGEnIGFuZCB0aGUgY29sdW1uIGNvbnRhaW5pbmcgdGhlIGNvdW50cnkgaW5mb3JtYXRpb24gaXMgY2FsbGVkICdjb3VudHJ5Jwpjb3VudHJ5X2NvdW50cyA8LSBkYXRhICU+JQogIGNvdW50KGNvdW50cnlfbGFiKQoKIyBQcmludCB0aGUgcmVzdWx0CnByaW50KGNvdW50cnlfY291bnRzKQoKYGBgCgojbnVtYmVyIGFuZCBsaXN0IGFuZCBwYXJ0aWNpcGFudHMgcHJvIGNvdW50cmllcyBwcm8gV2F2ZSAoaW5jbHVkaW5nIGJvdGggV2F2ZXMgdG9nZXRoZXIpCmBgYHtyfQp0YWJsZShkYXRhX1dhdmU1JGNvdW50cnlfbGFiKQpsZW5ndGgodW5pcXVlKGRhdGFfV2F2ZTUkY291bnRyeV9sYWIpKSAKdGFibGUoZGF0YV9XYXZlNiRjb3VudHJ5X2xhYikKbGVuZ3RoKHVuaXF1ZShkYXRhX1dhdmU2JGNvdW50cnlfbGFiKSkKbGVuZ3RoKHVuaXF1ZShkYXRhJGNvdW50cnlfbGFiKSkgCnRhYmxlKGRhdGEkY291bnRyeV9sYWIpCmBgYAoKCmBgYHtyfQpkYXRhJHJpc2sgPSA2IC0gZGF0YSRyaXNrICsgMQpkYXRhJHJpc2tfb3JkPWRhdGEkcmlzayAKZGF0YSRyaXNrID0gMTAqc2NhbGUoZGF0YSRyaXNrLCBjZW50ZXI9VFJVRSxzY2FsZT1UUlVFKSs1MApkYXRhCgoKYGBgCgojbnVtYmVyIG9mIG1hbGVzIHZzIGZlbWFsZXMgKDEgPSBtYWxlczsgMiA9IGZlbWFsZXMpCmBgYHtyfQp0YWJsZShkYXRhJHNleCkKdGFibGUoZGF0YV9XYXZlNSRzZXgpCnRhYmxlKGRhdGFfV2F2ZTYkc2V4KQpgYGAKCgpgYGB7cn0KI2NyZWF0ZSBhIGNhdGVnb3JpY2FsIGFnZSB2YXJpYWJsZQpkYXRhJGFnZWNhdFtkYXRhJGFnZTwyMF09IjE1LTE5IgpkYXRhJGFnZWNhdFtkYXRhJGFnZT49MjAgJiBkYXRhJGFnZSA8MzBdID0gIjIwLTI5IgpkYXRhJGFnZWNhdFtkYXRhJGFnZT49MzAgJiBkYXRhJGFnZSA8NDBdID0gIjMwLTM5IgpkYXRhJGFnZWNhdFtkYXRhJGFnZT49NDAgJiBkYXRhJGFnZSA8NTBdID0gIjQwLTQ5IgpkYXRhJGFnZWNhdFtkYXRhJGFnZT49NTAgJiBkYXRhJGFnZSA8NjBdID0gIjUwLTU5IgpkYXRhJGFnZWNhdFtkYXRhJGFnZT49NjAgJiBkYXRhJGFnZSA8NzBdID0gIjYwLTY5IgpkYXRhJGFnZWNhdFtkYXRhJGFnZT49NzAgJiBkYXRhJGFnZSA8ODBdID0gIjcwLTc5IgpkYXRhJGFnZWNhdFtkYXRhJGFnZT49ODBdID0gIjgwKyIKYGBgCgoKI2dlbmRlciB2YXJpYWJsZXMKYGBge3J9CmRhdGEkc2V4W2RhdGEkc2V4ID09IDFdIDwtICJtYWxlIgpkYXRhJHNleFtkYXRhJHNleCA9PSAyXSA8LSAiZmVtYWxlIgoKZGF0YV9XYXZlNSRzZXhbZGF0YV9XYXZlNSRzZXggPT0gMV0gPC0gIm1hbGUiCmRhdGFfV2F2ZTUkc2V4W2RhdGFfV2F2ZTUkc2V4ID09IDJdIDwtICJmZW1hbGUiCgpkYXRhX1dhdmU2JHNleFtkYXRhX1dhdmU2JHNleCA9PSAxXSA8LSAibWFsZSIKZGF0YV9XYXZlNiRzZXhbZGF0YV9XYXZlNiRzZXggPT0gMl0gPC0gImZlbWFsZSIKCiNhdmVyYWdlIGFnZSBvZiBwYXJ0aWNpcGFudHMKbWVhbihkYXRhJGFnZSkKbWVkaWFuKGRhdGEkYWdlKQpgYGAKCiN3YXZlIHZhcmlhYmxlcwpgYGB7cn0KZGF0YSR3YXZlW2RhdGEkd2F2ZSA9PSA1XSA8LSAiV2F2ZSA1IgpkYXRhJHdhdmVbZGF0YSR3YXZlID09IDZdIDwtICJXYXZlIDYiCmRhdGEKYGBgCgoKI2FnZSByYW5nZQpgYGB7cn0KcmFuZ2UoZGF0YSRhZ2UpIApyYW5nZShkYXRhX1dhdmU1JGFnZSkKcmFuZ2UoZGF0YV9XYXZlNiRhZ2UpCmBgYAojcmlzayB0YWtpbmcgRnJlcXVlbmN5CmBgYHtyfQpsaWJyYXJ5KGdncGxvdDIpCmdncGxvdChkYXRhLCBhZXMoeCA9IHJpc2spKSArCiAgZ2VvbV9oaXN0b2dyYW0oYmlud2lkdGggPSAwLjUsIGZpbGwgPSAibGlnaHRibHVlIiwgY29sb3IgPSAiYmxhY2siKSArCiAgbGFicyh4ID0gIlJpc2sgVGFraW5nIiwgeSA9ICJGcmVxdWVuY3kiLCB0aXRsZSA9ICJIaXN0b2dyYW0gb2YgUmlzayBUYWtpbmciKSArCiAgdGhlbWVfbWluaW1hbCgpCmBgYAojYWdlIGZyZXF1ZW5jeQpgYGB7cn0KZ2dwbG90KGRhdGEsIGFlcyh4ID0gYWdlKSkgKwogIGdlb21faGlzdG9ncmFtKGJpbndpZHRoID0gMC41LCBmaWxsID0gImxpZ2h0Ymx1ZSIsIGNvbG9yID0gImJsYWNrIikgKwogIGxhYnMoeCA9ICJBZ2UiLCB5ID0gIkZyZXF1ZW5jeSIsIHRpdGxlID0gIkhpc3RvZ3JhbSBvZiBBZ2UgRGlzdHJpYnV0aW9ubiIpICsKICB0aGVtZV9taW5pbWFsKCkKYGBgCiNhZ2UgdnMgcmlzayB0YWtpbmcKYGBge3J9CgpnZ3Bsb3QoZGF0YSwgYWVzKHggPSBhZ2VjYXQsIHkgPSByaXNrKSkgKwogIGdlb21fYm94cGxvdCgpICsKICBsYWJzKHRpdGxlID0gIkJveHBsb3Qgb2YgUmlzayBhbmQgQWR2ZW50dXJlIGJ5IEFnZSIsCiAgICAgICB4ID0gIkFnZSIsCiAgICAgICB5ID0gIlJpc2sgYW5kIEFkdmVudHVyZSIpICsKICB0aGVtZV9taW5pbWFsKCkKCgpgYGAKI3NleCB2cyByaXNrIHRha2luZwpgYGB7cn0KZ2dwbG90KGRhdGEsIGFlcyhhcy5mYWN0b3Ioc2V4KSwgcmlzaykpKwogIGdlb21fYm94cGxvdCgpCgpgYGAKYGBge3J9CiNkZXNjcmlwdGl2ZSBkYXRhIApzdW1tYXJ5KGRhdGEpCmBgYApgYGB7cn0KI2RhdGEgY2xlYW5pbmc6IGRlbGV0aW9uIG9mIE5BcyAKZGF0YSA9IG5hLm9taXQoZGF0YSkKc3VtbWFyeShkYXRhKQpgYGAKYGBge3J9CiNyaXNrIGRpc3RyaWJ1dGlvbiBhY2NvcmRpbmcgdG8gV2F2ZXMgNSBhbmQgNiAKZ2dwbG90KGRhdGEsIGFlcyhhcy5mYWN0b3Iod2F2ZSksIHJpc2spKSsKICBnZW9tX2JveHBsb3QoKQpgYGAKYGBge3J9CiNyaXNrIHZzIGFnZQpsaWJyYXJ5KGdncGxvdDIpCmdncGxvdChkYXRhLCBhZXMocmlzaywgYWdlKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCmBgYAoKCmBgYHtyfQojc2VsZWN0ZWQgMyBjb3VudHJpZXM6IEFuZG9ycmEsIFJvbWFuaWEsIFNwYWluCmRhdGExIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIkFuZG9ycmEiLCAiUm9tYW5pYSIsICJTcGFpbiIpKQojIDMgcmlzayBkaXN0cmlidXRpb24gZm9yIDMgY291bnRyaWVzCmdncGxvdChkYXRhMSwgYWVzKGFzLmZhY3Rvcihjb3VudHJ5X2xhYiksIHJpc2spKSsKICBnZW9tX2JveHBsb3QoKQpgYGAKYGBge3J9CiNhZ2UgdnMgcmlzayBkZXBlbmRpbmcgb24gY291bnRyeQpnZ3Bsb3QoZGF0YSwgYWVzKGFnZSwgcmlzaywgY29sb3IgPSBhcy5mYWN0b3IoY291bnRyeV9sYWIpKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIHNlID0gVFJVRSkKYGBgCmBgYHtyfQpgYGAKCmBgYHtyfQojIHJlYWQgaW4gZmlsZSB0aGF0IGNvbnRhaW5zIGhhcmRzaGlwIGluZGljYXRvcnMgbWFudWFsbHkgY29sbGVjdGVkIGZyb20gQ0lBIGZhY3Rib29rLCBXSE8sIGFuZCBXb3JsZCBCYW5rIAojIChzZWUgU3VwcGxlbWVudGFsIE1hdGVyaWFscyBmb3IgVVJMIHNvdXJjZXMpCmNvdW50cnlmYWN0cyA9IHJlYWQuY3N2KCIvVXNlcnMvY3Jpc3RpbmFjYW5kaWRvL0RvY3VtZW50cy9HaXRodWIvcmlza193dnMvZGF0YS9XVlMvY291bnRyeWZhY3RzX3NlbGVjdGlvbi5jc3YiLCBhcy5pcyA9IFRSVUUsIGhlYWRlciA9IFRSVUUpIAoKIyBDcmVhdGUgYSB2ZWN0b3Igb2YgbGFiZWxzIHdpdGggdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiAnY291bnRyeWZhY3RzJwpsYWJlbHMgPC0gYygiY29kZSIsImNvdW50cnkiLCJjb2RlV1ZTIiwiSG9taWNpZGUiLCJHRFAiLCJJbmZNb3J0IiwiTGlmZUV4cCIsIkdJTkkiLCJHZW5kZXJQRWR1IiwiY29kZTIiKQoKCgoKIyBQcmludCB0aGUgcmVzdWx0CnByaW50KGNvdW50cnlmYWN0cykKYGBgCgpgYGB7cn0KIyBMb2FkIHRoZSBkcGx5ciBwYWNrYWdlCmxpYnJhcnkoZHBseXIpCgojIEFzc3VtaW5nIHRoZSBkYXRhIGZyYW1lIGlzIGNhbGxlZCAnZGF0YScgYW5kIHRoZSBjb2x1bW4gY29udGFpbmluZyB0aGUgY291bnRyeSBpbmZvcm1hdGlvbiBpcyBjYWxsZWQgJ2NvdW50cnknCmFnZV9jb3VudHMgPC0gZGF0YSAlPiUKICBjb3VudChhZ2VjYXQpCgojIFByaW50IHRoZSByZXN1bHQKcHJpbnQoYWdlX2NvdW50cykKYGBgCmBgYHtyfQpzdW1tYXJ5KGRhdGEpCmBgYAoKCmBgYHtyfQoKIyBMb2FkIHRoZSBkcGx5ciBwYWNrYWdlCmxpYnJhcnkoZHBseXIpCgoKIyBDb3VudCB0aGUgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIGVhY2ggYWdlIGNhdGVnb3J5IGZvciBlYWNoIGNvdW50cnkKYWdlcGVyY291bnRyaWVzX2NvdW50cyA8LSBkYXRhICU+JQogIGdyb3VwX2J5KGNvdW50cnlfbGFiKSAlPiUKICBjb3VudChhZ2VjYXQpCgojIFByaW50IHRoZSByZXN1bHQKcHJpbnQoYWdlcGVyY291bnRyaWVzX2NvdW50cykKCmBgYAoKYGBge3J9CiMgTG9hZCB0aGUgZHBseXIgcGFja2FnZSBpZiBub3QgYWxyZWFkeSBsb2FkZWQKaWYgKCFyZXF1aXJlKGRwbHlyKSkgewogIGluc3RhbGwucGFja2FnZXMoImRwbHlyIikKICBsaWJyYXJ5KGRwbHlyKQp9CgojIENvdW50IHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgZWFjaCBnZW5kZXIgZm9yIGVhY2ggY291bnRyeQpzZXhwZXJjb3VudHJpZXNfY291bnRzIDwtIGRhdGEgJT4lCiAgZ3JvdXBfYnkoY291bnRyeV9sYWIpICU+JQogIGNvdW50KHNleCkKCiMgUHJpbnQgdGhlIHJlc3VsdApwcmludChzZXhwZXJjb3VudHJpZXNfY291bnRzKQoKYGBgCmBgYHtyfQojIExvYWQgdGhlIGRwbHlyIHBhY2thZ2UgaWYgbm90IGFscmVhZHkgbG9hZGVkCmlmICghcmVxdWlyZShkcGx5cikpIHsKICBpbnN0YWxsLnBhY2thZ2VzKCJkcGx5ciIpCiAgbGlicmFyeShkcGx5cikKfQoKIyBHcm91cCB0aGUgZGF0YSBieSBjb3VudHJ5IGFuZCBjYWxjdWxhdGUgdGhlIGFnZSBkaXN0cmlidXRpb24KYWdlX2Rpc3RyaWJ1dGlvbl9wZXJfY291bnRyeSA8LSBkYXRhICU+JQogIGdyb3VwX2J5KGNvdW50cnlfbGFiKSAlPiUKICBzdW1tYXJpemUobWVhbl9hZ2UgPSBtZWFuKGFnZSwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgbWVkaWFuX2FnZSA9IG1lZGlhbihhZ2UsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIG1pbl9hZ2UgPSBtaW4oYWdlLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBtYXhfYWdlID0gbWF4KGFnZSwgbmEucm0gPSBUUlVFKSkKCiMgUHJpbnQgdGhlIHJlc3VsdApwcmludChhZ2VfZGlzdHJpYnV0aW9uX3Blcl9jb3VudHJ5KQoKYGBgCgpgYGB7cn0KIyBMb2FkIHRoZSBkcGx5ciBwYWNrYWdlIGlmIG5vdCBhbHJlYWR5IGxvYWRlZAppZiAoIXJlcXVpcmUoZHBseXIpKSB7CiAgaW5zdGFsbC5wYWNrYWdlcygiZHBseXIiKQogIGxpYnJhcnkoZHBseXIpCn0KCiMgR3JvdXAgdGhlIGRhdGEgYnkgc2V4IGFuZCBjYWxjdWxhdGUgdGhlIG1lYW4gcmlzayBmb3IgZWFjaCBzZXgKcmlza19ieV9zZXggPC0gZGF0YSAlPiUKICBncm91cF9ieShzZXgpICU+JQogIHN1bW1hcml6ZShtZWFuX3Jpc2sgPSBtZWFuKHJpc2tfb3JkLCBuYS5ybSA9IFRSVUUpKQoKIyBDYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgaW4gbWVhbiByaXNrIGJldHdlZW4gc2V4ZXMKc2V4X2RpZmZlcmVuY2UgPC0gZGlmZihyaXNrX2J5X3NleCRtZWFuX3Jpc2spCgojIFByaW50IHRoZSByZXN1bHQKcHJpbnQocmlza19ieV9zZXgpCnByaW50KHNleF9kaWZmZXJlbmNlKQoKCmBgYApgYGB7cn0KIyBMb2FkIHRoZSBkcGx5ciBwYWNrYWdlIGlmIG5vdCBhbHJlYWR5IGxvYWRlZAppZiAoIXJlcXVpcmUoZHBseXIpKSB7CiAgaW5zdGFsbC5wYWNrYWdlcygiZHBseXIiKQogIGxpYnJhcnkoZHBseXIpCn0KCiMgR3JvdXAgdGhlIGRhdGEgYnkgY291bnRyeV9sYWIgYW5kIGNhbGN1bGF0ZSB0aGUgbWVhbiByaXNrIGZvciBlYWNoIGNvdW50cnlfbGFiCnJpc2tfYnlfY291bnRyeV9sYWIgPC0gZGF0YSAlPiUKICBncm91cF9ieShjb3VudHJ5X2xhYikgJT4lCiAgc3VtbWFyaXplKG1lYW5fcmlzayA9IG1lYW4ocmlza19vcmQsIG5hLnJtID0gVFJVRSkpCgojIFByaW50IHRoZSByZXN1bHQKcHJpbnQocmlza19ieV9jb3VudHJ5X2xhYikKYGBgCgpgYGB7cn0KIyBMb2FkIHRoZSBkcGx5ciBwYWNrYWdlIGlmIG5vdCBhbHJlYWR5IGxvYWRlZAppZiAoIXJlcXVpcmUoZHBseXIpKSB7CiAgaW5zdGFsbC5wYWNrYWdlcygiZHBseXIiKQogIGxpYnJhcnkoZHBseXIpCn0KCgoKIyBHcm91cCB0aGUgZGF0YSBieSBhZ2VfY2F0IGFuZCBjYWxjdWxhdGUgdGhlIG1lYW4gcmlzayBmb3IgZWFjaCBhZ2UgY2F0ZWdvcnkKcmlza19ieV9hZ2VjYXQgPC0gZGF0YSAlPiUKICBncm91cF9ieShhZ2VjYXQpICU+JQogIHN1bW1hcml6ZShtZWFuX3Jpc2sgPSBtZWFuKHJpc2tfb3JkLCBuYS5ybSA9IFRSVUUpKQoKIyBQcmludCB0aGUgcmVzdWx0CnByaW50KHJpc2tfYnlfYWdlY2F0KQoKYGBgCgoKYGBge3J9CmRhdGEKYGBgCmBgYHtyfQojIExvYWQgdGhlIGRwbHlyIHBhY2thZ2UgaWYgbm90IGFscmVhZHkgbG9hZGVkCmlmICghcmVxdWlyZShkcGx5cikpIHsKICBpbnN0YWxsLnBhY2thZ2VzKCJkcGx5ciIpCiAgbGlicmFyeShkcGx5cikKfQoKIyBDcmVhdGUgdGhlICdoYXJkc2hpcCcgY29sdW1uIGluIHRoZSAnY291bnRyeWZhY3RzJyBkYXRhIGZyYW1lCmNvdW50cnlmYWN0cyA8LSBjb3VudHJ5ZmFjdHMgJT4lCiAgbXV0YXRlKGhhcmRzaGlwID0gKGhvbWljaWRlcmF0ZSArIGdkcCArIGluZmFudG1vcnRhbGl0eSArIGxpZmVleHBlY3RhbmN5ICsgZ2luaSArIGZlbWFsZW1hbGVfcHJpbWVkdSkgLyA2KQpjb3VudHJ5ZmFjdHMKCgoKIyBWaWV3IHRoZSBkaXN0cmlidXRpb24gb2YgdGhlICdoYXJkc2hpcF9pbmRleCcgY29sdW1uIGZvciBlYWNoIGNvdW50cnkKaGFyZHNoaXBfaW5kZXhfZGlzdHJpYnV0aW9uIDwtIGNvdW50cnlmYWN0cyAlPiUKICBncm91cF9ieShsYWJlbCkgJT4lCiAgc3VtbWFyaXplKAogICAgbWVhbiA9IG1lYW4oaGFyZHNoaXAsIG5hLnJtID0gVFJVRSksCiAgICBtZWRpYW4gPSBtZWRpYW4oaGFyZHNoaXAsIG5hLnJtID0gVFJVRSksCiAgICBzZCA9IHNkKGhhcmRzaGlwLCBuYS5ybSA9IFRSVUUpLAogICAgbWluID0gbWluKGhhcmRzaGlwLCBuYS5ybSA9IFRSVUUpLAogICAgbWF4ID0gbWF4KGhhcmRzaGlwLCBuYS5ybSA9IFRSVUUpLAogICAgbiA9IHN1bSghaXMubmEoaGFyZHNoaXApKQogICkKCiMgUHJpbnQgdGhlIHJlc3VsdApwcmludChoYXJkc2hpcF9pbmRleF9kaXN0cmlidXRpb24pCgoKCiAgCgoKCgoKCgoKCmBgYAoKYGBge3J9CmNvdW50cnlmYWN0cwpgYGAKI0FsZ2VyaWEgCmBgYHtyfQpkYXRhQWxnZXJpYSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJBbGdlcmlhIikpCmxpYnJhcnkoZ2dwbG90MikKCgpwQWxnZXJpYSA8LSBnZ3Bsb3QoZGF0YUFsZ2VyaWEsIGFlcyh4ID0gc2NhbGUoYWdlKSwgeSA9IHJpc2tfb3JkLCBjb2xvciA9IGFzLmZhY3RvcihzZXgpKSkgKwogIGdlb21fcG9pbnQoKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikgKwogIGxhYnModGl0bGUgPSAiU2NhdHRlcnBsb3Qgb2Ygcmlza19vcmQgdnMuIGFnZSBpbiBBbGdlcmlhIiwgeCA9ICJBZ2UiLCB5ID0gIlJpc2siKQoKcHJpbnQocEFsZ2VyaWEpCgoKIyBGaXQgYSBsaW5lYXIgbW9kZWwKbW9kZWxBbGdlcmlhIDwtIGxtKHJpc2tfb3JkIH4gc2NhbGUoYWdlKSAqIGZhY3RvcihzZXgpLCBkYXRhID0gZGF0YUFsZ2VyaWEpCnN1bW1hcnkobW9kZWwpCgoKCgoKYGBgCgoKYGBge3J9CmRhdGFBbGdlcmlhCmBgYAojQW5kb3JyYQpgYGB7cn0KZGF0YUFuZG9ycmEgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiQW5kb3JyYSIpKQpsaWJyYXJ5KGdncGxvdDIpClBBbmRvcnJhID0gZ2dwbG90KGRhdGFBbmRvcnJhLCBhZXMoeCA9IHNjYWxlKGFnZSksIHJpc2tfb3JkLCBjb2xvciA9IGFzLmZhY3RvcihzZXgpKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpClBBbmRvcnJhCgptb2RlbEFuZG9ycmE8LSBsbShyaXNrX29yZCB+IHNjYWxlKGFnZSkgKiBmYWN0b3Ioc2V4KSwgZGF0YSA9IGRhdGFBbmRvcnJhKQptb2RlbEFuZG9ycmEKYGBgCmBgYHtyfQpjb3VudHJ5X2NvdW50cwpgYGAKI0FyZ2VudGluYQpgYGB7cn0KZGF0YUFyZ2VudGluYSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJBcmdlbnRpbmEiKSkKbGlicmFyeShnZ3Bsb3QyKQpwQXJnZW50aW5hID0gZ2dwbG90KGRhdGFBcmdlbnRpbmEsIGFlcyh4ID0gc2NhbGUoYWdlKSwgcmlza19vcmQsIGNvbG9yID0gYXMuZmFjdG9yKHNleCkpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcEFyZ2VudGluYQoKTW9kZWxBcmdlbnRpbmEgPC0gbG0ocmlza19vcmQgfiBzY2FsZShhZ2UpICogZmFjdG9yKHNleCksIGRhdGEgPSBkYXRhQXJnZW50aW5hKQpNb2RlbEFyZ2VudGluYQoKYGBgCiNBcm1lbmlhCmBgYHtyfQpkYXRhQXJtZW5pYSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJBcm1lbmlhIikpCmxpYnJhcnkoZ2dwbG90MikKcEFybWVuaWEgPSBnZ3Bsb3QoZGF0YUFybWVuaWEsIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBBcm1lbmlhCgpgYGAKI0F1c3RyYWxpYQpgYGB7cn0KZGF0YUF1c3RyYWxpYSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJBdXN0cmFsaWEiKSkKbGlicmFyeShnZ3Bsb3QyKQpwQXVzdHJhbGlhID0gZ2dwbG90KGRhdGFBdXN0cmFsaWEsIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBBdXN0cmFsaWEKYGBgCiNBemVyYmFpamFuCmBgYHtyfQpkYXRhQXplcmJhaWphbiA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJBdXN0cmFsaWEiKSkKbGlicmFyeShnZ3Bsb3QyKQpwQXplcmJhaWphbiA9IGdncGxvdChkYXRhQXplcmJhaWphbiwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcEF6ZXJiYWlqYW4KYGBgCiNCZWxhcnVzCmBgYHtyfQpkYXRhQmVsYXJ1cyA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJCZWxhcnVzIikpCmxpYnJhcnkoZ2dwbG90MikKcEJlbGFydXMgPSBnZ3Bsb3QoZGF0YUJlbGFydXMsIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBCZWxhcnVzCmBgYAojQnJhemlsCmBgYHtyfQpkYXRhQnJhemlsIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIkJyYXppbCIpKQpsaWJyYXJ5KGdncGxvdDIpCnBCcmF6aWwgPSBnZ3Bsb3QoZGF0YUJyYXppbCwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcEJyYXppbApgYGAKI0J1bGdhcmlhCmBgYHtyfQpkYXRhQnVsZ2FyaWEgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiQnVsZ2FyaWEiKSkKbGlicmFyeShnZ3Bsb3QyKQpwQnVsZ2FyaWEgPSBnZ3Bsb3QoZGF0YUJ1bGdhcmlhLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwQnVsZ2FyaWEKCgoKYGBgCiNCdXJraW5hIEZhc28KYGBge3J9CmRhdGFCdXJraW5hRmFzbyA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJCdXJraW5hIEZhc28iKSkKbGlicmFyeShnZ3Bsb3QyKQpwQnVya2luYUZhc28gPSBnZ3Bsb3QoZGF0YUJ1cmtpbmFGYXNvLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwQnVya2luYUZhc28KYGBgCiNDYW5hZGEKYGBge3J9CmRhdGFDYW5hZGEgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiQ2FuYWRhIikpCmxpYnJhcnkoZ2dwbG90MikKcENhbmFkYSA9IGdncGxvdChkYXRhQ2FuYWRhLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwQ2FuYWRhCmBgYAojQ2hpbGUKYGBge3J9CmRhdGFDaGlsZSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJDaGlsZSIpKQpsaWJyYXJ5KGdncGxvdDIpCnBDaGlsZSA9IGdncGxvdChkYXRhQ2hpbGUsIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBDaGlsZQpgYGAKI0NoaW5hCmBgYHtyfQpkYXRhQ2hpbmEgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiQ2hpbmEiKSkKbGlicmFyeShnZ3Bsb3QyKQpwQ2hpbmEgPSBnZ3Bsb3QoZGF0YUNoaW5hLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwQ2hpbmEKYGBgCiNDb2xvbWJpYQpgYGB7cn0KZGF0YUNvbG9tYmlhIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIkNvbG9tYmlhIikpCmxpYnJhcnkoZ2dwbG90MikKcENvbG9tYmlhID0gZ2dwbG90KGRhdGFDb2xvbWJpYSwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcENvbG9tYmlhCmBgYAojQ3lwcnVzIChHKQpgYGB7cn0KZGF0YUN5cHJ1cyA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJDeXBydXMgKEcpIikpCmxpYnJhcnkoZ2dwbG90MikKcEN5cHJ1cyA9IGdncGxvdChkYXRhQ3lwcnVzLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwQ3lwcnVzCmBgYAojRWN1YWRvcgpgYGB7cn0KZGF0YUVjdWFkb3IgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiRWN1YWRvciIpKQpsaWJyYXJ5KGdncGxvdDIpCnBFY3VhZG9yID0gZ2dwbG90KGRhdGFFY3VhZG9yLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwRWN1YWRvcgpgYGAKI0VneXB0CmBgYHtyfQpkYXRhRWd5cHQgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiRWd5cHQiKSkKbGlicmFyeShnZ3Bsb3QyKQpwRWd5cHQgPSBnZ3Bsb3QoZGF0YUVneXB0LCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwRWd5cHQKYGBgCiNFc3RvbmlhCmBgYHtyfQpkYXRhRXN0b25pYSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJFc3RvbmlhIikpCmxpYnJhcnkoZ2dwbG90MikKcEVzdG9uaWEgPSBnZ3Bsb3QoZGF0YUVzdG9uaWEsIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBFc3RvbmlhCmBgYAojRXRoaW9waWEKYGBge3J9CmRhdGFFdGhpb3BpYSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJFdGhpb3BpYSIpKQpsaWJyYXJ5KGdncGxvdDIpCnBFdGhpb3BpYSA9IGdncGxvdChkYXRhRXRoaW9waWEsIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBFdGhpb3BpYQpgYGAKI0ZpbmxhbmQKYGBge3J9CmRhdGFGaW5sYW5kIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIkZpbmxhbmQiKSkKbGlicmFyeShnZ3Bsb3QyKQpwRmlubGFuZCA9IGdncGxvdChkYXRhRmlubGFuZCwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcEZpbmxhbmQKYGBgCiNGcmFuY2UKYGBge3J9CmRhdGFGcmFuY2UgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiRnJhbmNlIikpCmxpYnJhcnkoZ2dwbG90MikKcEZyYW5jZSA9IGdncGxvdChkYXRhRnJhbmNlLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwRnJhbmNlCmBgYAoKI0dlb3JnaWEKYGBge3J9CmRhdGFHZW9yZ2lhIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIkdlb3JnaWEiKSkKbGlicmFyeShnZ3Bsb3QyKQpwR2VvcmdpYSA9IGdncGxvdChkYXRhR2VvcmdpYSwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcEdlb3JnaWEKYGBgCgojR2VybWFueQpgYGB7cn0KZGF0YUdlcm1hbnkgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiR2VybWFueSIpKQpsaWJyYXJ5KGdncGxvdDIpCnBHZXJtYW55ID0gZ2dwbG90KGRhdGFHZXJtYW55LCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwR2VybWFueQpgYGAKCiNHaGFuYQpgYGB7cn0KZGF0YUdoYW5hIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIkdoYW5hIikpCmxpYnJhcnkoZ2dwbG90MikKcEdoYW5hID0gZ2dwbG90KGRhdGFHaGFuYSwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcEdoYW5hCmBgYAoKI0dyZWF0IEJyaXRhaW4KYGBge3J9CmRhdGFVSyA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJHcmVhdCBCcml0YWluIikpCmxpYnJhcnkoZ2dwbG90MikKcFVLID0gZ2dwbG90KGRhdGFVSywgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcFVLCmBgYAoKI0hhaXRpCmBgYHtyfQpkYXRhSGFpdGkgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiSGFpdGkiKSkKbGlicmFyeShnZ3Bsb3QyKQpwSGFpdGkgPSBnZ3Bsb3QoZGF0YUhhaXRpLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwSGFpdGkKYGBgCiNIb25nIEtvbmcKYGBge3J9CmRhdGFIb25nS29uZyA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJIb25nIEtvbmciKSkKbGlicmFyeShnZ3Bsb3QyKQpwSG9uZ0tvbmcgPSBnZ3Bsb3QoZGF0YUhvbmdLb25nLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwSG9uZ0tvbmcKYGBgCiNIdW5nYXJ5CmBgYHtyfQpkYXRhSHVuZ2FyeSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJIdW5nYXJ5IikpCmxpYnJhcnkoZ2dwbG90MikKcEh1bmdhcnkgPSBnZ3Bsb3QoZGF0YUh1bmdhcnksIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBIdW5nYXJ5CmBgYAojSW5kaWEKYGBge3J9CmRhdGFJbmRpYSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJJbmRpYSIpKQpsaWJyYXJ5KGdncGxvdDIpCnBJbmRpYSA9IGdncGxvdChkYXRhSW5kaWEsIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBJbmRpYQpgYGAKI0luZG9uZXNpYQpgYGB7cn0KZGF0YUluZG9uZXNpYSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJJbmRvbmVzaWEiKSkKbGlicmFyeShnZ3Bsb3QyKQpwSW5kb25lc2lhID0gZ2dwbG90KGRhdGFJbmRvbmVzaWEsIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBJbmRvbmVzaWEKYGBgCgojSXJhbgpgYGB7cn0KZGF0YUlyYW4gPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiSXJhbiIpKQpsaWJyYXJ5KGdncGxvdDIpCnBJcmFuID0gZ2dwbG90KGRhdGFJcmFuLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwSXJhbgpgYGAKI0lyYXEKYGBge3J9CmRhdGFJcmFxIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIklyYXEiKSkKbGlicmFyeShnZ3Bsb3QyKQpwSXJhcSA9IGdncGxvdChkYXRhSXJhcSwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcElyYXEKYGBgCgojSmFwYW4KYGBge3J9CmRhdGFKYXBhbiA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJKYXBhbiIpKQpsaWJyYXJ5KGdncGxvdDIpCnBKYXBhbiA9IGdncGxvdChkYXRhSmFwYW4sIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBKYXBhbgpgYGAKCiNKb3JkYW4KYGBge3J9CmRhdGFKb3JkYW4gPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiSm9yZGFuIikpCmxpYnJhcnkoZ2dwbG90MikKcEpvcmRhbiA9IGdncGxvdChkYXRhSm9yZGFuLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwSm9yZGFuCmBgYAoKI0themFraHN0YW4KYGBge3J9CmRhdGFLYXpha2hzdGFuIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIkthemFraHN0YW4iKSkKbGlicmFyeShnZ3Bsb3QyKQpwS2F6YWtoc3RhbiA9IGdncGxvdChkYXRhS2F6YWtoc3RhbiwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcEthemFraHN0YW4KYGBgCiNLdXdhaXQKYGBge3J9CmRhdGFLdXdhaXQgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiS3V3YWl0IikpCmxpYnJhcnkoZ2dwbG90MikKcEt1d2FpdCA9IGdncGxvdChkYXRhS3V3YWl0LCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwS3V3YWl0CmBgYAojS3lyZ3l6c3RhbgpgYGB7cn0KZGF0YUt5cmd5enN0YW4gPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiS3lyZ3l6c3RhbiIpKQpsaWJyYXJ5KGdncGxvdDIpCnBLeXJneXpzdGFuID0gZ2dwbG90KGRhdGFLeXJneXpzdGFuLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwS3lyZ3l6c3RhbgpgYGAKCiNMZWJhbm9uCmBgYHtyfQpkYXRhTGViYW5vbiA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJMZWJhbm9uIikpCmxpYnJhcnkoZ2dwbG90MikKcExlYmFub24gPSBnZ3Bsb3QoZGF0YUxlYmFub24sIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBMZWJhbm9uCmBgYAojTGlieWEKYGBge3J9CmRhdGFMaWJ5YSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJMaWJ5YSIpKQpsaWJyYXJ5KGdncGxvdDIpCnBMaWJ5YSA9IGdncGxvdChkYXRhTGlieWEsIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBMaWJ5YQpgYGAKCiNNYWxheXNpYQpgYGB7cn0KZGF0YU1hbGF5c2lhIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIk1hbGF5c2lhIikpCmxpYnJhcnkoZ2dwbG90MikKcE1hbGF5c2lhID0gZ2dwbG90KGRhdGFNYWxheXNpYSwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcE1hbGF5c2lhCmBgYAojTWFsaQpgYGB7cn0KZGF0YU1hbGkgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiTWFsaSIpKQpsaWJyYXJ5KGdncGxvdDIpCnBNYWxpID0gZ2dwbG90KGRhdGFNYWxpLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwTWFsaQpgYGAKCiNNZXhpY28KYGBge3J9CmRhdGFNZXhpY28gPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiTWV4aWNvIikpCmxpYnJhcnkoZ2dwbG90MikKcE1leGljbyA9IGdncGxvdChkYXRhTWV4aWNvLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwTWV4aWNvCmBgYAojTW9yb2NjbwpgYGB7cn0KZGF0YU1vcm9jY28gPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiTW9yb2NjbyIpKQpsaWJyYXJ5KGdncGxvdDIpCnBNb3JvY2NvID0gZ2dwbG90KGRhdGFNb3JvY2NvLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwTW9yb2NjbwpgYGAKI05ldGhlcmxhbmQKYGBge3J9CmRhdGFOZXRoZXJsYW5kcyA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJOZXRoZXJsYW5kcyIpKQpsaWJyYXJ5KGdncGxvdDIpCnBOZXRoZXJsYW5kcyA9IGdncGxvdChkYXRhTmV0aGVybGFuZHMsIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBOZXRoZXJsYW5kcwpgYGAKI05ldyBaZWFsYW5kCmBgYHtyfQpkYXRhTmV3WmVhbGFuZCA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJOZXcgWmVhbGFuZCIpKQpsaWJyYXJ5KGdncGxvdDIpCnBOZXdaZWFsYW5kID0gZ2dwbG90KGRhdGFOZXdaZWFsYW5kLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwTmV3WmVhbGFuZApgYGAKI05pZ2VyaWEKYGBge3J9CmRhdGFOaWdlcmlhIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIk5pZ2VyaWEiKSkKbGlicmFyeShnZ3Bsb3QyKQpwTmlnZXJpYSA9IGdncGxvdChkYXRhTmlnZXJpYSwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcE5pZ2VyaWEKYGBgCgojTm9yd2F5IApgYGB7cn0KZGF0YU5vcndheSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJOb3J3YXkiKSkKbGlicmFyeShnZ3Bsb3QyKQpwTm9yd2F5ID0gZ2dwbG90KGRhdGFOb3J3YXksIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBOb3J3YXkKYGBgCiNQYWtpc3RhbgpgYGB7cn0KZGF0YVBha2lzdGFuIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIlBha2lzdGFuIikpCmxpYnJhcnkoZ2dwbG90MikKcFBha2lzdGFuID0gZ2dwbG90KGRhdGFQYWtpc3RhbiwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcFBha2lzdGFuCmBgYAojUGFsZXN0aW5lCmBgYHtyfQpkYXRhUGFsZXN0aW5lIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIlBhbGVzdGluZSIpKQpsaWJyYXJ5KGdncGxvdDIpCnBQYWxlc3RpbmUgPSBnZ3Bsb3QoZGF0YVBhbGVzdGluZSwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcFBhbGVzdGluZQpgYGAKI1BlcnUKYGBge3J9CmRhdGFQZXJ1IDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIlBlcnUiKSkKbGlicmFyeShnZ3Bsb3QyKQpwUGVydSA9IGdncGxvdChkYXRhUGVydSwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcFBlcnUKYGBgCgojUGhpbGlwcGluZXMgCmBgYHtyfQpkYXRhUGhpbGlwcGluZXMgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiUGhpbGlwcGluZXMiKSkKbGlicmFyeShnZ3Bsb3QyKQpwUGhpbGlwcGluZXMgPSBnZ3Bsb3QoZGF0YVBoaWxpcHBpbmVzLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwUGhpbGlwcGluZXMKYGBgCgojUG9sYW5kCmBgYHtyfQpkYXRhUG9sYW5kIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIlBvbGFuZCIpKQpsaWJyYXJ5KGdncGxvdDIpCnBQb2xhbmQgPSBnZ3Bsb3QoZGF0YVBvbGFuZCwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcFBvbGFuZApgYGAKI1FhdGFyCmBgYHtyfQpkYXRhUWF0YXIgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiUWF0YXIiKSkKbGlicmFyeShnZ3Bsb3QyKQpwUWF0YXIgPSBnZ3Bsb3QoZGF0YVFhdGFyLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwUWF0YXIKYGBgCiNSb21hbmlhCmBgYHtyfQpkYXRhUm9tYW5pYSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJSb21hbmlhIikpCmxpYnJhcnkoZ2dwbG90MikKcFJvbWFuaWEgPSBnZ3Bsb3QoZGF0YVJvbWFuaWEsIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBSb21hbmlhCmBgYAojUnVzc2lhCmBgYHtyfQpkYXRhUnVzc2lhIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIlJ1c3NpYSIpKQpsaWJyYXJ5KGdncGxvdDIpCnBSdXNzaWEgPSBnZ3Bsb3QoZGF0YVJ1c3NpYSwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcFJ1c3NpYQpgYGAKI1J3YW5kYQpgYGB7cn0KZGF0YVJ3YW5kYSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJSd2FuZGEiKSkKbGlicmFyeShnZ3Bsb3QyKQpwUndhbmRhID0gZ2dwbG90KGRhdGFSd2FuZGEsIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBSd2FuZGEKYGBgCiNTaW5nYXBvcmUKYGBge3J9CmRhdGFTaW5nYXBvcmUgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiU2luZ2Fwb3JlIikpCmxpYnJhcnkoZ2dwbG90MikKcFNpbmdhcG9yZSA9IGdncGxvdChkYXRhU2luZ2Fwb3JlLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwU2luZ2Fwb3JlCmBgYAojU2xvdmVuaWEKYGBge3J9CmRhdGFTbG92ZW5pYSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJTbG92ZW5pYSIpKQpsaWJyYXJ5KGdncGxvdDIpCnBTbG92ZW5pYSA9IGdncGxvdChkYXRhU2xvdmVuaWEsIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBTbG92ZW5pYQpgYGAKI1NvdXRoIEFmcmljYQpgYGB7cn0KZGF0YVNvdXRoQWZyaWNhIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIlNvdXRoIEFmcmljYSIpKQpsaWJyYXJ5KGdncGxvdDIpCnBTb3V0aEFmcmljYSA9IGdncGxvdChkYXRhU291dGhBZnJpY2EsIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBTb3V0aEFmcmljYQpgYGAKCiNTb3V0aCBLb3JlYQpgYGB7cn0KZGF0YVNvdXRoS29yZWEgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiU291dGggS29yZWEiKSkKbGlicmFyeShnZ3Bsb3QyKQpwU291dGhLb3JlYSA9IGdncGxvdChkYXRhU291dGhLb3JlYSwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcFNvdXRoS29yZWEKYGBgCiNTcGFpbgpgYGB7cn0KZGF0YVNwYWluIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIlNwYWluIikpCmxpYnJhcnkoZ2dwbG90MikKcFNwYWluID0gZ2dwbG90KGRhdGFTcGFpbiwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcFNwYWluCmBgYAojU3dlZGVuCmBgYHtyfQpkYXRhU3dlZGVuIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIlN3ZWRlbiIpKQpsaWJyYXJ5KGdncGxvdDIpCnBTd2VkZW4gPSBnZ3Bsb3QoZGF0YVN3ZWRlbiwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcFN3ZWRlbgpgYGAKI1N3aXR6ZXJsYW5kIApgYGB7cn0KZGF0YVN3aXR6ZXJsYW5kIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIlN3aXR6ZXJsYW5kIikpCmxpYnJhcnkoZ2dwbG90MikKcFN3aXR6ZXJsYW5kID0gZ2dwbG90KGRhdGFTd2l0emVybGFuZCwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcFN3aXR6ZXJsYW5kCmBgYAojVGFpd2FuCmBgYHtyfQpkYXRhVGFpd2FuIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIlRhaXdhbiIpKQpsaWJyYXJ5KGdncGxvdDIpCnBUYWl3YW4gPSBnZ3Bsb3QoZGF0YVRhaXdhbiwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcFRhaXdhbgpgYGAKCiNUaGFpbGFuZApgYGB7cn0KZGF0YVRoYWlsYW5kIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIlRoYWlsYW5kIikpCmxpYnJhcnkoZ2dwbG90MikKcFRoYWlsYW5kID0gZ2dwbG90KGRhdGFUaGFpbGFuZCwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcFRoYWlsYW5kCmBgYAoKI1RyaW5pZGFkIGFuZCBUb2JhZ28KYGBge3J9CmRhdGFUcmluaWRhZCA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJUcmluaWRhZCBhbmQgVG9iYWdvIikpCmxpYnJhcnkoZ2dwbG90MikKcFRyaW5pZGFkID0gZ2dwbG90KGRhdGFUcmluaWRhZCwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcFRyaW5pZGFkCmBgYAoKI1R1bmlzaWEKYGBge3J9CmRhdGFUdW5pc2lhPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiVHVuaXNpYSIpKQpsaWJyYXJ5KGdncGxvdDIpCnBUdW5pc2lhID0gZ2dwbG90KGRhdGFUdW5pc2lhLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwVHVuaXNpYQpgYGAKCiNUdXJrZXkKYGBge3J9CmRhdGFUdXJrZXkgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiVHVya2V5IikpCmxpYnJhcnkoZ2dwbG90MikKcFR1cmtleSA9IGdncGxvdChkYXRhVHVya2V5LCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwVHVya2V5CmBgYAoKI1VrcmFpbmUKYGBge3J9CmRhdGFVa3JhaW5lIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIlVrcmFpbmUiKSkKbGlicmFyeShnZ3Bsb3QyKQpwVWtyYWluZSA9IGdncGxvdChkYXRhVWtyYWluZSwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcFVrcmFpbmUKYGBgCgojVW5pdGVkIFN0YXRlcwpgYGB7cn0KZGF0YVVTIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIlVuaXRlZCBTdGF0ZXMiKSkKbGlicmFyeShnZ3Bsb3QyKQpwVVMgPSBnZ3Bsb3QoZGF0YVVTLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwVVMKYGBgCgojVXJ1Z3VheQpgYGB7cn0KZGF0YVVydWd1YXkgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiVXJ1Z3VheSIpKQpsaWJyYXJ5KGdncGxvdDIpCnBVcnVndWF5ID0gZ2dwbG90KGRhdGFVcnVndWF5LCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwVXJ1Z3VheQpgYGAKCiNVemJla2lzdGFuCmBgYHtyfQpkYXRhVXpiZWtpc3RhbiA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJVemJla2lzdGFuIikpCmxpYnJhcnkoZ2dwbG90MikKcFV6YmVraXN0YW4gPSBnZ3Bsb3QoZGF0YVV6YmVraXN0YW4sIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBVemJla2lzdGFuCmBgYAoKI1ZpZXQgTmFtCmBgYHtyfQpkYXRhVmlldE5hbSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJWaWV0IE5hbSIpKQpsaWJyYXJ5KGdncGxvdDIpCnBWaWV0TmFtID0gZ2dwbG90KGRhdGFWaWV0TmFtLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwVmlldE5hbQpgYGAKCiNZZW1lbgpgYGB7cn0KZGF0YVllbWVuIDwtIHN1YnNldChkYXRhLCBjb3VudHJ5X2xhYiAlaW4lIGMoIlllbWVuIikpCmxpYnJhcnkoZ2dwbG90MikKcFllbWVuID0gZ2dwbG90KGRhdGFZZW1lbiwgYWVzKGFnZSwgcmlza19vcmQpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKcFllbWVuCmBgYAoKI1phbWJpYQpgYGB7cn0KZGF0YVphbWJpYSA8LSBzdWJzZXQoZGF0YSwgY291bnRyeV9sYWIgJWluJSBjKCJaYW1iaWEiKSkKbGlicmFyeShnZ3Bsb3QyKQpwWmFtYmlhID0gZ2dwbG90KGRhdGFaYW1iaWEsIGFlcyhhZ2UsIHJpc2tfb3JkKSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCnBaYW1iaWEKYGBgCgojWmltYmFid2UgCmBgYHtyfQpkYXRhWmltYmFid2UgPC0gc3Vic2V0KGRhdGEsIGNvdW50cnlfbGFiICVpbiUgYygiWmltYmFid2UiKSkKbGlicmFyeShnZ3Bsb3QyKQpwWmltYmFid2UgPSBnZ3Bsb3QoZGF0YVppbWJhYndlLCBhZXMoYWdlLCByaXNrX29yZCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQpwWmltYmFid2UKYGBgCgpgYGB7cn0KI3N1bW1hcmlzZSB0aGUgY291bnRyaWVzCiMgQXNzdW1pbmcgeW91ciBvcmlnaW5hbCBkYXRhIGZyYW1lIGhhcyB1cHBlcmNhc2UgdmFyaWFibGUgbmFtZXMgKEFnZSBhbmQgUmlzaykKCm1lYW5zX2RhdGEgPC0gZGF0YSAlPiUKICBncm91cF9ieShjb3VudHJ5X2xhYikgJT4lCiAgc3VtbWFyaXNlKAogICAgTWVhbl9BZ2UgPSBtZWFuKGFnZSksCiAgICBNZWFuX1Jpc2sgPSBtZWFuKHJpc2tfb3JkKSkKICAgIAogICAgCiAgCgptZWFuc19kYXRhCgpgYGAKYGBge3J9CmNvdW50cnlmYWN0cwoKYGBgCmBgYHtyfQpnZHBfZGF0YSA8LSBjb3VudHJ5ZmFjdHMgJT4lCiAgc2VsZWN0KCwgbGFiZWwsIGNvZGUsIGdkcCkKZ2RwX2RhdGEKCmBgYAoKYGBge3J9CiNlZmZlY3QgZm9yIGdlbmRlciBwZXIgY291bnRyeQojZWZmZWN0IGFnZSAKYGBgCgoKCgoKCgoKCgoKCgoKCgoKCgoK